package br.com.jk.financeiro.movimento;

import br.com.jk.cliente.Cliente;
import br.com.jk.financeiro.contaBanco.ContaBanco;
import br.com.jk.financeiro.movimentotipo.MovimentoTipo;
import br.com.jk.fornecedor.Fornecedor;
import br.com.jk.util.pesquisa.Pesquisa.Opcao;
import java.util.List;

/**
 *
 * @author camilo
 */
public interface MovimentoDao {

  public static final String NAME_TABLE = "movimento";
  public static final String NAME_SCHEMA = "financeiro";
  public static final String NAME_COLUMN_ID = "id";
  public static final String NAME_COLUMN_NUMERO_CHEQUE = "numero_cheque";
  public static final String NAME_COLUMN_VALOR = "valor";
  public static final String NAME_COLUMN_FORNECEDOR = "id_fornecedor";
  public static final String NAME_COLUMN_DATA_PREVISAO = "data_previsao";
  public static final String NAME_COLUMN_CONTABANCO = "id_conta_banco";
  public static final String NAME_COLUMN_DATA_REALIZADO = "data_realizado";
  public static final String NAME_COLUMN_STATUS = "status";
  public static final String NAME_COLUMN_NUM_DOCUMENTO = "num_documento";
  public static final String NAME_COLUMN_OBSERVACAO = "observacao";
  public static final String NAME_COLUMN_CLIENTE = "id_cliente";
  public static final String NAME_COLUMN_MOVIMENTO_TIPO = "id_movimento_tipo";
  public static final String NAME_COLUMN_DATA_LANCAMENTO = "data_lancamento";
  public static final String NAME_SEQUENCE = "financeiro.seq_movimento";
  public static final String NAME_FK_FORNECEDOR = "fk_movimento_fornecedor";
  public static final String NAME_FK_CONTABANCO = "fk_movimento_contabanco";
  public static final String NAME_FK_CLIENTE = "fk_movimento_cliente";
  public static final String NAME_FK_MOVIMENTO_TIPO = "fk_movimento_movimentotipo";
  public static final String NAME_UK_NUMERO_CHEQUE = "uk_movimento_numero_cheque";

  public void salvar(Movimento cotacao);

  public void excluir(Movimento cotacao);

  public Movimento carregar(int id);

  public List<Movimento> listar();

  public List<Movimento> listarPorConta(ContaBanco conta);

  public List<Movimento> listarPorFornecedor(Fornecedor fornecedor);

  public List<Movimento> listarPorCliente(Cliente cliente);

  public List<Movimento> listarPorTipo(MovimentoTipo movTipo);

  public List<Movimento> pesquisaPadrao(String property, String criterio, Opcao opcao);

  public List<Movimento> pesquisaPadrao(String property, int criterio, Opcao opcao);
}
